package com.qp.bookkeeping.business.book.service;

import com.qp.bookkeeping.business.book.model.Do.ShareGroupDo;
import com.qp.bookkeeping.business.book.model.Do.UserDo;
import com.qp.bookkeeping.business.book.model.req.*;
import com.qp.bookkeeping.business.book.model.rsp.UserInfoByPhoneRsp;
import com.qp.bookkeeping.business.book.model.rsp.UserInfoRsp;

import java.util.List;

/**
 * @author xutianqi
 */
public interface UserService {
    void saveUser(UserDo userDo);

    /**
     * 新建共享组
     *
     * @param createGroupReq 请求体
     */
    void createGroup(CreateGroupReq createGroupReq);

    /**
     * 查询共享组
     *
     * @param queryGroupReq 查询共享组请求体
     */
    List<ShareGroupDo> queryGroup(QueryGroupReq queryGroupReq);

    /**
     * 查询用户信息
     *
     * @param queryUserInfoReq 请求体
     * @return 返回体
     */
    UserInfoRsp queryUserInfo(QueryUserInfoReq queryUserInfoReq);

    /**
     * 通过手机号查询用户信息
     *
     * @param queryUserInfoReq 请求体
     * @return 返回体
     */
    UserInfoByPhoneRsp queryUserInfoByPhone(QueryUserInfoReq queryUserInfoReq);

    void updateGroupName(UpdateGroupReq updateGroupReq);

    /**
     * 加入共享组
     *
     * @param joinGroupReq 加入共享组请求体
     */
    void joinGroup(JoinGroupReq joinGroupReq);

    /**
     * 更新用户
     *
     * @param updateUserReq 更新用户请求体
     */
    void changePhone(UpdateUserReq updateUserReq);

    /**
     * 更新用户基础数据
     *
     * @param updateUserReq 更新用户请求体
     */
    void updateUser(UpdateUserReq updateUserReq);

    /**
     * 删除共享组成员
     *
     * @param shareGroupDo 请求体
     */
    void deleteMember(ShareGroupDo shareGroupDo);
}
